In graphics processing operations, a 3D graphics pipeline may be required to handle multiple different primitive topology types, either as input topology types and output topology types. The primitive topology types generally include, but are not limited to, points, lines, triangles, and quads. In a conventional processing system, each such topology type requires separate processing, including setting the topology type, setting a vertex buffer, setting an index buffer, and executing the draw.
However, switching input topology types or output topology types between draw calls requires significant time and processing overhead for a graphics processing unit (GPU). When switching rasterization topology types between draws, the 3D graphics pipeline will generally stall, and command streamer overhead is introduced. In a worst-case scenario when changing topology types, the rasterizer hardware units may need to be flushed, and potentially the whole graphics pipeline will require flushing, before the new topology type can be used. Further, there is GPU overhead when processing the state command on the command streamer to program the vertex fetch/input assembler and rasterization hardware units.